/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocios;

import Gestores.DtoObjects.DetalleEgresoDTO;
import Gestores.Entidades.EntidadCuota;
import Gestores.Entidades.EntidadDetalleEgreso;
import Gestores.Factory.FactoryClass;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Lion
 */
public class DetalleEgresoNegocio {

    private DetalleEgresoDTO dto;
    private EntidadDetalleEgreso entidad;

    public DetalleEgresoNegocio() {
        this.dto = FactoryClass.getDetalleEgresoInstance();

    }//this.txt_usuario.getText(),this.txt_monto.getText(),this.cmb_date.getDate(),
    //  this.cmb_cuenta.getSelectedItem()

    public void insertar(int u, float monto, Date f, Object cuenta) throws Exception {
        String cue = (String) cuenta;
        if (cue.length() < 21) {
            if (monto > 0.0) {
                GestionCuentaPagoNegocio cu = new GestionCuentaPagoNegocio();
                int idcuenta = cu.obtenerCodigoCuenta((String) cuenta);
                java.sql.Date d = new java.sql.Date(f.getTime());
                EntidadDetalleEgreso enti = new EntidadDetalleEgreso(idcuenta, u, monto, d, false);
                dto.insertar(enti);
                // dto.insertar(object);
            } else {
                throw new Exception("Error al enviar Datos");
            }
        } else {
            throw new Exception("Error en el nombre de la cuenta");
        }
    }

    public ArrayList<Object> buscarDetalleEgresoMonto(Float f) throws Exception {
        if (f > 0.0) {
            return this.dto.buscarPorMonto(f);
        } else {
            throw new Exception("Error en el monto, verifique los datos");
        }
    }
    //BuscarDetallePago(cu int,u int,f date,m float)
    public ArrayList<Object> buscarDetalleEgresoTodosCriterios(int cuenta, int usua, Date d,float m)throws Exception{
        java.sql.Date f = new java.sql.Date(d.getTime());
        return this.dto.buscarDetalleEgresoTodosCriterios(cuenta, usua, f, m);
    }

    public ArrayList<Object> buscarDetalleEgresoFecha(Date f) throws Exception {
        java.sql.Date d = new java.sql.Date(f.getTime());
        return this.dto.buscarPorFecha(d.toString());
    }

    public ArrayList<Object> buscarDetalleEgresoUsuario(int u) throws Exception {
        return this.dto.buscarPorUsuario(u);
    }

    public ArrayList<Object> buscarDetalleEgresoCuenta(int cu) throws Exception {
        return this.dto.buscarPorCuenta(cu);
    }

    public DefaultTableModel tabularDatos(ArrayList<Object> listaDatos) {
        String[] campos = new String[]{"Id Detalle","Cuenta","Id Cuenta", "Usuario","Id Usuario", "Monto", "Fecha"};
        DefaultTableModel model = new DefaultTableModel(campos, 0);

        for (int i = 0; i < listaDatos.size(); i++) {
            EntidadDetalleEgreso eDetalle = (EntidadDetalleEgreso) listaDatos.get(i);
            Object[] camposCuota = new Object[]{eDetalle.getId(),eDetalle.getCuenta(),eDetalle.getId_cuenta(),
                eDetalle.getUsuario(),eDetalle.getId_usuario(),
                eDetalle.getMonto(), eDetalle.getFecha()};
            model.addRow(camposCuota);
        }

        return model;
    }
    public void eliminacionLogica(int id, int cu, int u)throws Exception{
        EntidadDetalleEgreso e= new EntidadDetalleEgreso();
        e.setId(id);
        e.setId_cuenta(cu);
        e.setId_usuario(u);
        this.dto.eliminacionLogica(e);
    }
}
